<?php

class User_SolicitudsController extends Zend_Controller_Action
{

    public function init()
    {
        $mail = $this->_getParam('mail', NULL);
        $token = $this->_getParam('token', NULL);
        $res = 0;
        if(is_null($mail) || is_null($token)){
            $res = -1;
            echo Zend_Json_Encoder::encode("-1");
        } else {
            $model_auth = new User_Model_AuthUsers();
            $auth = $model_auth->checkToken($mail,$token); 
            
            if($auth != 0)  echo Zend_Json_Encoder::encode("-4");
        }

        if($res == -1 || $auth != 0){
            exit;
        }
    }

    public function indexAction()
    {
        // action body
    }

    public function getAction(){
        $id_sol = $this->_getParam('id',NULL);
        $mail = $this->_getParam('mail',NULL);
        $token = $this->_getParam('token',NULL);
        
         if(is_null($token) ||is_null($mail)){
            $res = -1;
        } else {
            if(is_null($id_sol)){     // Consultar peticions deferides
                $model_sol = new User_Model_Solicituds();
                $aux = $model_sol->obte_peticions_diferides($mail);
                if($aux == -1)  $res = -2;
                else {
                    $res = $aux;

                }
                
            } else {                // Consultar peticio immediata
                $model_sol = new User_Model_Solicituds();
                $mail_taxi = $model_sol->obte_mail_taxi($id_sol);
                if($mail_taxi == -1)    $res = -2;              // No existeix solicitud amb id "id_solicitud"
                else {
                    $model_estat = new User_Model_Estat();
                    if(!$model_estat->get_dades($mail_taxi, $nom, $posX, $posY))    $res = -3;  // La solicitud no te taxista assignat
                    else        $res = array($nom, $posX, $posY);
                }
            }
        }
        
        echo Zend_Json_Encoder::encode($res);
        exit;
    }
    
    public function postAction(){
        $mail = $this->_getParam('mail',NULL);
        $posX = $this->_getParam('posX',NULL);
        $posY = $this->_getParam('posY',NULL);
        $dia = $this->_getParam('dia',NULL);
        $hora = $this->_getParam('hora',NULL);
        
        if(is_null($mail) || is_null($posX) ||is_null($posY)){
            $res = -1;
        } else {
            
            $model_sol = new User_Model_Solicituds();
            $id_sol = $model_sol->fer_solicitud($mail, $posX, $posY, $dia, $hora); 
            
            // Demana el taxista més proper (tant si es immediat com diferit)
            $model_estat = new User_Model_Estat();
            $taxi_proper = $model_estat->pregunta_al_mes_proper($posX, $posY);
            
            if($taxi_proper == -1){             // No hi ha taxis disponibles
                $res = -2;       
                $model_sol->cancelar_solicitud($id_sol);
                
            } else {                            // Si que nhi ha, es fa la peticio
                $res = $id_sol;
                if(!is_null($dia)){      // Peticio diferida
                    $model_estat->peticio_diferida($taxi_proper);
                } else {                // Peticio immediata
                    $model_estat->peticio($taxi_proper, $id_sol);   
                }
            }
        }

        echo Zend_Json_Encoder::encode($res);
        exit;
    }

    public function deleteAction(){
        
        $id = $this->_getParam('id',NULL);
        
        if(is_null($id)){
            $res = -1;
        } else {
            $model_sol = new User_Model_Solicituds();
            if($model_sol->cancelar_solicitud($id)) $res = 0;   // OK
            else                                    $res = -2;  // Solicitud $id no existeix
        } 
        
        echo Zend_Json_Encoder::encode($res);
        exit;
    }
    
}

